/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.bean;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Zully
 */
@Entity
@Table(name = "vehiculos")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Vehiculos.findAll", query = "SELECT v FROM Vehiculos v"),
    @NamedQuery(name = "Vehiculos.findById", query = "SELECT v FROM Vehiculos v WHERE v.id = :id"),
    @NamedQuery(name = "Vehiculos.findByPlaca", query = "SELECT v FROM Vehiculos v WHERE v.placa = :placa"),
    @NamedQuery(name = "Vehiculos.findByFechaRegistro", query = "SELECT v FROM Vehiculos v WHERE v.fechaRegistro = :fechaRegistro"),
    @NamedQuery(name = "Vehiculos.findByModeloAnio", query = "SELECT v FROM Vehiculos v WHERE v.modeloAnio = :modeloAnio"),
    @NamedQuery(name = "Vehiculos.findByCapacidadTanque", query = "SELECT v FROM Vehiculos v WHERE v.capacidadTanque = :capacidadTanque"),
    @NamedQuery(name = "Vehiculos.findBySerieChasis", query = "SELECT v FROM Vehiculos v WHERE v.serieChasis = :serieChasis"),
    @NamedQuery(name = "Vehiculos.findByNumeroMotor", query = "SELECT v FROM Vehiculos v WHERE v.numeroMotor = :numeroMotor"),
    @NamedQuery(name = "Vehiculos.findByNumeroInventario", query = "SELECT v FROM Vehiculos v WHERE v.numeroInventario = :numeroInventario"),
    @NamedQuery(name = "Vehiculos.findByFechaCompra", query = "SELECT v FROM Vehiculos v WHERE v.fechaCompra = :fechaCompra"),
    @NamedQuery(name = "Vehiculos.findByNumFacturaCompra", query = "SELECT v FROM Vehiculos v WHERE v.numFacturaCompra = :numFacturaCompra"),
    @NamedQuery(name = "Vehiculos.findByPrecioVehiculo", query = "SELECT v FROM Vehiculos v WHERE v.precioVehiculo = :precioVehiculo"),
    @NamedQuery(name = "Vehiculos.findByMaximaCapacidadCargaPeso", query = "SELECT v FROM Vehiculos v WHERE v.maximaCapacidadCargaPeso = :maximaCapacidadCargaPeso"),
    @NamedQuery(name = "Vehiculos.findByMaximaCapacidadCargaVolumen", query = "SELECT v FROM Vehiculos v WHERE v.maximaCapacidadCargaVolumen = :maximaCapacidadCargaVolumen"),
    @NamedQuery(name = "Vehiculos.findByCodBarras", query = "SELECT v FROM Vehiculos v WHERE v.codBarras = :codBarras"),
    @NamedQuery(name = "Vehiculos.findByComentarios", query = "SELECT v FROM Vehiculos v WHERE v.comentarios = :comentarios"),
    @NamedQuery(name = "Vehiculos.findByEstado", query = "SELECT v FROM Vehiculos v WHERE v.estado = :estado"),
    @NamedQuery(name = "Vehiculos.findByFechaInsercionActualizacion", query = "SELECT v FROM Vehiculos v WHERE v.fechaInsercionActualizacion = :fechaInsercionActualizacion"),
    @NamedQuery(name = "Vehiculos.findByKmActual", query = "SELECT v FROM Vehiculos v WHERE v.kmActual = :kmActual"),
    @NamedQuery(name = "Vehiculos.findByKmRecorridoMensual", query = "SELECT v FROM Vehiculos v WHERE v.kmRecorridoMensual = :kmRecorridoMensual")})
public class Vehiculos implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "placa")
    private String placa;
    @Basic(optional = false)
    @Column(name = "fecha_registro")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaRegistro;
    @Column(name = "modelo_anio")
    private String modeloAnio;
    @Column(name = "capacidad_tanque")
    private String capacidadTanque;
    @Column(name = "serie_chasis")
    private String serieChasis;
    @Column(name = "numero_motor")
    private String numeroMotor;
    @Column(name = "numero_inventario")
    private String numeroInventario;
    @Column(name = "fecha_compra")
    @Temporal(TemporalType.DATE)
    private Date fechaCompra;
    @Column(name = "num_factura_compra")
    private String numFacturaCompra;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "precio_vehiculo")
    private Double precioVehiculo;
    @Column(name = "maxima_capacidad_carga_peso")
    private Float maximaCapacidadCargaPeso;
    @Column(name = "maxima_capacidad_carga_volumen")
    private Float maximaCapacidadCargaVolumen;
    @Column(name = "cod_barras")
    private String codBarras;
    @Column(name = "comentarios")
    private String comentarios;
    @Basic(optional = false)
    @Column(name = "estado")
    private boolean estado;
    @Basic(optional = false)
    @Column(name = "fecha_insercion_actualizacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaInsercionActualizacion;
    @Column(name = "km_actual")
    private int kmActual;
    @Column(name = "km_recorrido_mensual")
    private int kmRecorridoMensual;
    @JoinColumn(name = "id_usuario", referencedColumnName = "id")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Usuarios idUsuario;
    @JoinColumn(name = "id_tipo_eje", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private TiposEje idTipoEje;
    @JoinColumn(name = "id_tipo", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private TiposVehiculo idTipo;
    @JoinColumn(name = "id_marca", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private MarcasVehiculo idMarca;
    @JoinColumn(name = "id_forma_pago", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private FormasPago idFormaPago;
    @JoinColumn(name = "id_flotilla", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private Flotillas idFlotilla;
    @JoinColumn(name = "id_distribuidor", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private DistribuidoresVehiculos idDistribuidor;
    @JoinColumn(name = "id_combustible", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private TiposCombustible idCombustible;
    @Lob
    @Column(name = "imagen")
    private byte[] imagen;
    @Basic(optional = false)
    @Column(name = "nro_baterias")
    private short nroBaterias;
    @Basic(optional = false)
    @Column(name = "nro_max_baterias")
    private short nroMaxBaterias;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idVehiculos", fetch = FetchType.LAZY)
    private List<Egresos> egresosList;
    @OneToMany(mappedBy = "idVehiculoSalida", fetch = FetchType.LAZY)
    private List<InspeccionEquipo> inspeccionEquipoList;
    @OneToMany(mappedBy = "idVehiculoEntrada", fetch = FetchType.LAZY)
    private List<InspeccionEquipo> inspeccionEquipoList1;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idVehiculo", fetch = FetchType.LAZY)
    private List<ComprobacionBandaRodamientoPresion> comprobacionBandaRodamientoPresionList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idVehiculos", fetch = FetchType.LAZY)
    private List<Alineaciones> alineacionesList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idVehiculo", fetch = FetchType.LAZY)
    private List<ControlCambioNeumatico> controlCambioNeumaticoList;

    public Vehiculos() {
    }

    public Vehiculos(Integer id) {
        this.id = id;
    }

    public Vehiculos(Integer id, String placa, Date fechaRegistro, boolean estado, Date fechaInsercionActualizacion) {
        this.id = id;
        this.placa = placa;
        this.fechaRegistro = fechaRegistro;
        this.estado = estado;
        this.fechaInsercionActualizacion = fechaInsercionActualizacion;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getPlaca() {
        return placa;
    }

    public void setPlaca(String placa) {
        this.placa = placa;
    }

    public Date getFechaRegistro() {
        return fechaRegistro;
    }

    public void setFechaRegistro(Date fechaRegistro) {
        this.fechaRegistro = fechaRegistro;
    }

    public String getModeloAnio() {
        return modeloAnio;
    }

    public void setModeloAnio(String modeloAnio) {
        this.modeloAnio = modeloAnio;
    }

    public String getCapacidadTanque() {
        return capacidadTanque;
    }

    public void setCapacidadTanque(String capacidadTanque) {
        this.capacidadTanque = capacidadTanque;
    }

    public String getSerieChasis() {
        return serieChasis;
    }

    public void setSerieChasis(String serieChasis) {
        this.serieChasis = serieChasis;
    }

    public String getNumeroMotor() {
        return numeroMotor;
    }

    public void setNumeroMotor(String numeroMotor) {
        this.numeroMotor = numeroMotor;
    }

    public String getNumeroInventario() {
        return numeroInventario;
    }

    public void setNumeroInventario(String numeroInventario) {
        this.numeroInventario = numeroInventario;
    }

    public Date getFechaCompra() {
        return fechaCompra;
    }

    public void setFechaCompra(Date fechaCompra) {
        this.fechaCompra = fechaCompra;
    }

    public String getNumFacturaCompra() {
        return numFacturaCompra;
    }

    public void setNumFacturaCompra(String numFacturaCompra) {
        this.numFacturaCompra = numFacturaCompra;
    }

    public Double getPrecioVehiculo() {
        return precioVehiculo;
    }

    public void setPrecioVehiculo(Double precioVehiculo) {
        this.precioVehiculo = precioVehiculo;
    }

    public Float getMaximaCapacidadCargaPeso() {
        return maximaCapacidadCargaPeso;
    }

    public void setMaximaCapacidadCargaPeso(Float maximaCapacidadCargaPeso) {
        this.maximaCapacidadCargaPeso = maximaCapacidadCargaPeso;
    }

    public Float getMaximaCapacidadCargaVolumen() {
        return maximaCapacidadCargaVolumen;
    }

    public void setMaximaCapacidadCargaVolumen(Float maximaCapacidadCargaVolumen) {
        this.maximaCapacidadCargaVolumen = maximaCapacidadCargaVolumen;
    }

    public String getCodBarras() {
        return codBarras;
    }

    public void setCodBarras(String codBarras) {
        this.codBarras = codBarras;
    }

    public String getComentarios() {
        return comentarios;
    }

    public void setComentarios(String comentarios) {
        this.comentarios = comentarios;
    }

    public boolean getEstado() {
        return estado;
    }

    public void setEstado(boolean estado) {
        this.estado = estado;
    }

    public Date getFechaInsercionActualizacion() {
        return fechaInsercionActualizacion;
    }

    public void setFechaInsercionActualizacion(Date fechaInsercionActualizacion) {
        this.fechaInsercionActualizacion = fechaInsercionActualizacion;
    }

    public int getKmActual() {
        return kmActual;
    }

    public void setKmActual(int kmActual) {
        this.kmActual = kmActual;
    }

    public int getKmRecorridoMensual() {
        return kmRecorridoMensual;
    }

    public void setKmRecorridoMensual(int kmRecorridoMensual) {
        this.kmRecorridoMensual = kmRecorridoMensual;
    }

    public Usuarios getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Usuarios idUsuario) {
        this.idUsuario = idUsuario;
    }

    public TiposEje getIdTipoEje() {
        return idTipoEje;
    }

    public void setIdTipoEje(TiposEje idTipoEje) {
        this.idTipoEje = idTipoEje;
    }

    public TiposVehiculo getIdTipo() {
        return idTipo;
    }

    public void setIdTipo(TiposVehiculo idTipo) {
        this.idTipo = idTipo;
    }

    public MarcasVehiculo getIdMarca() {
        return idMarca;
    }

    public void setIdMarca(MarcasVehiculo idMarca) {
        this.idMarca = idMarca;
    }

    public FormasPago getIdFormaPago() {
        return idFormaPago;
    }

    public void setIdFormaPago(FormasPago idFormaPago) {
        this.idFormaPago = idFormaPago;
    }

    public Flotillas getIdFlotilla() {
        return idFlotilla;
    }

    public void setIdFlotilla(Flotillas idFlotilla) {
        this.idFlotilla = idFlotilla;
    }

    public DistribuidoresVehiculos getIdDistribuidor() {
        return idDistribuidor;
    }

    public void setIdDistribuidor(DistribuidoresVehiculos idDistribuidor) {
        this.idDistribuidor = idDistribuidor;
    }

    public TiposCombustible getIdCombustible() {
        return idCombustible;
    }

    public void setIdCombustible(TiposCombustible idCombustible) {
        this.idCombustible = idCombustible;
    }

    public byte[] getImagen() {
        return imagen;
    }

    public void setImagen(byte[] imagen) {
        this.imagen = imagen;
    }
    
    public short getNroBaterias() {
        return nroBaterias;
    }

    public void setNroBaterias(short nroBaterias) {
        this.nroBaterias = nroBaterias;
    }

    public short getNroMaxBaterias() {
        return nroMaxBaterias;
    }

    public void setNroMaxBaterias(short nroMaxBaterias) {
        this.nroMaxBaterias = nroMaxBaterias;
    }
    
    @XmlTransient
    public List<Egresos> getEgresosList() {
        return egresosList;
    }

    public void setEgresosList(List<Egresos> egresosList) {
        this.egresosList = egresosList;
    }
    
    @XmlTransient
    public List<InspeccionEquipo> getInspeccionEquipoList() {
        return inspeccionEquipoList;
    }

    public void setInspeccionEquipoList(List<InspeccionEquipo> inspeccionEquipoList) {
        this.inspeccionEquipoList = inspeccionEquipoList;
    }

    @XmlTransient
    public List<InspeccionEquipo> getInspeccionEquipoList1() {
        return inspeccionEquipoList1;
    }

    public void setInspeccionEquipoList1(List<InspeccionEquipo> inspeccionEquipoList1) {
        this.inspeccionEquipoList1 = inspeccionEquipoList1;
    }

    @XmlTransient
    public List<ComprobacionBandaRodamientoPresion> getComprobacionBandaRodamientoPresionList() {
        return comprobacionBandaRodamientoPresionList;
    }

    public void setComprobacionBandaRodamientoPresionList(List<ComprobacionBandaRodamientoPresion> comprobacionBandaRodamientoPresionList) {
        this.comprobacionBandaRodamientoPresionList = comprobacionBandaRodamientoPresionList;
    }

    @XmlTransient
    public List<Alineaciones> getAlineacionesList() {
        return alineacionesList;
    }

    public void setAlineacionesList(List<Alineaciones> alineacionesList) {
        this.alineacionesList = alineacionesList;
    }

    @XmlTransient
    public List<ControlCambioNeumatico> getControlCambioNeumaticoList() {
        return controlCambioNeumaticoList;
    }

    public void setControlCambioNeumaticoList(List<ControlCambioNeumatico> controlCambioNeumaticoList) {
        this.controlCambioNeumaticoList = controlCambioNeumaticoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Vehiculos)) {
            return false;
        }
        Vehiculos other = (Vehiculos) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return placa;
    }

}
